
// 实现可迭代接口——Iterable   

// 通过对象实现iterable接口来遍历对象  
// 在对象中挂载iterator方法，在该方法中返回迭代器对象  

// obj对象实现可迭代接口， 约定内部一定要返回一个可迭代的iterator方法
// [Symbol.iterator]返回了iterator方法， 约定内部一定要有一个可迭代的next方法
// next实现的是一个iterationResult接口，必须返回value——任意值表示返回的迭代数据， done——布尔值，表示迭代是否接收
const obj = { // Iterable
    store: ['alpha', 'beta', 'gamma'],
    [Symbol.iterator]: function(){ // iterator
        let index = 0
        const self = this
        return {
            next: function(){ // iterationResult
                const result = {
                    value: self.store[index],
                    done: index >= self.store.length
                }
                index++
                return result
            }
        }
    }
}

for(const item of obj){
    console.log(item)
}